package com.processinformation.daoimpl;

import java.util.HashMap;
import java.util.Map;

import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Repository;

import com.processinformation.base.dbinstance.DBInstance;
import com.processinformation.dao.LoginDao;
import com.processinformation.entity.system.SysUserEntity;

@Repository
@Qualifier("loginDao")
public class LoginDaoImpl implements LoginDao {

	/*dao方法对应的sql存放的命名空间，sql我们都放在LoginMapper.xml中，保留testdbmapper.xml是为了展示update、insert、delete的写法
	mybatis会根据dao方法指定的路径去找要执行的sql，例如mapperNamespace+"getUserByLoginNameAndPwd"，就是说去这个命名空间找一个叫
	做getUserByLoginNameAndPwd的方法，传入的参数类型，和要返回的类型都在sql中设置，注释见LoginMapper.xml文件*/
	//该字符串不定义也可以，就需要每一个方法调用时写命名空间全路径，为了方便这个dao类的所有方法，写了这么一个字符串
	private final static String mapperNamespace="com.processinformation.mapper.LoginMapper.";
	
	@Override
	public SysUserEntity getUserByLoginNameAndPwd(DBInstance dins, String loginName, String pwd) {
		// TODO Auto-generated method stub
		Map<String,Object> param=new HashMap<String,Object>();
		param.put("loginName", loginName);
		param.put("pwd", pwd);
		
		//打开连接，此过程在单次、不要求事务控制的方法中不要求自己写，已经做了封装，这里是为了展示数据连接打开和关闭的方法。
		dins.open();
		
		//selectOne中有open和close的过程，感兴趣可以跟进去看下
		SysUserEntity user=(SysUserEntity)dins.selectOne(mapperNamespace+"getUserByLoginNameAndPwd", param);
		
		//关闭连接，不关闭的话会占满连接池，所以如果显式的open，就要记得显式的close
		dins.close();
		return user;
	}

}
